如何在python中使用flask上传多个文件

您所在的位置:网站首页 flask 文件 如何在python中使用flask上传多个文件

如何在python中使用flask上传多个文件

2023-03-24 22:20| 来源: 网络整理| 查看: 265

这是我上传多个文件的代码:

HTML代码:

Browse

PYTHON代码:

pro_attachment = request.files.getlist('pro_attachment1') for upload in pro_attachment: filename = upload.filename.rsplit("/")[0] destination = os.path.join(application.config['UPLOAD_FOLDER'], filename) print "Accept incoming file:", filename print "Save it to:", destination upload.save(destination)

但它上传的是单个文件而不是多个文件.

1> Grey Li..:

如何

在模板中,您需要mulitple在上传输入中添加属性:

然后在视图功能中,上传的文件可以作为列表通过request.files.getlist('photos').循环此列表并在每个项目上调用save()方法(werkzeug.datastructures.FileStorage)将它们保存在给定的路径中:

import os from flask import Flask, request, render_template, redirect app = Flask(__name__) app.config['UPLOAD_PATH'] = '/the/path/to/save' @app.route('/upload', methods=['GET', 'POST']) def upload(): if requesthod == 'POST' and 'photo' in request.files: for f in request.files.getlist('photo'): f.save(os.path.join(app.config['UPLOAD_PATH'], f.filename)) return 'Upload completed.' return render_template('upload.html')

此外,您可能需要使用secure_filename()来清除文件名:

# ... from werkzeug.utils import secure_filename # ... for f in request.files.getlist('photo'): filename = secure_filename(f.filename) f.save(os.path.join(app.config['UPLOAD_PATH'], filename)) # ...

您还可以使用此方法生成随机文件名.

完整演示

视图:

import os from flask import Flask, request, render_template from werkzeug.utils import secure_filename app = Flask(__name__) app.config['UPLOAD_PATH'] = '/the/path/to/save' @main.route('/upload', methods=['GET', 'POST']) def upload(): form = UploadForm() if form.validate_on_submit() and 'photo' in request.files: for f in request.files.getlist('photo'): filename = secure_filename(f.filename) f.save(os.path.join(app.config['UPLOAD_PATH'], filename)) return 'Upload completed.' return render_template('upload.html', form=form)

形成:

from flask_wtf import FlaskForm from wtforms import SubmitField from flask_wtf.file import FileField, FileAllowed, FileRequired class UploadForm(FlaskForm): photo = FileField('Image', validators=[ FileRequired(), FileAllowed(photos, 'Image only!') ]) submit = SubmitField('Submit')

模板:

{{ form.hidden_tag() }} {{ form.photo(multiple="multiple") }} {{ form.submit }} 更多

要获得更好的上传体验,您可以尝试使用Flask-Dropzone.



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3